diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 5c3d1a0dc0..4a0994c351 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -5261,16 +5261,7 @@ static struct pollfd *fd_sets_to_poll( const WS_fd_set *readfds, const WS_fd_set
             fds[j].fd = get_sock_fd( readfds->fd_array[i], FILE_READ_DATA, NULL );
             if (fds[j].fd == -1) goto failed;
             fds[j].revents = 0;
-            if (is_fd_bound(fds[j].fd, NULL, NULL) == 1)
-            {
-                fds[j].events = POLLIN;
-            }
-            else
-            {
-                release_sock_fd( readfds->fd_array[i], fds[j].fd );
-                fds[j].fd = -1;
-                fds[j].events = 0;
-            }
+            fds[j].events = POLLIN;
         }
     if (writefds)
         for (i = 0; i < writefds->fd_count; i++, j++)
@@ -5278,17 +5269,7 @@ static struct pollfd *fd_sets_to_poll( const WS_fd_set *readfds, const WS_fd_set
             fds[j].fd = get_sock_fd( writefds->fd_array[i], FILE_WRITE_DATA, NULL );
             if (fds[j].fd == -1) goto failed;
             fds[j].revents = 0;
-            if (is_fd_bound(fds[j].fd, NULL, NULL) == 1 ||
-                _get_fd_type(fds[j].fd) == SOCK_DGRAM)
-            {
-                fds[j].events = POLLOUT;
-            }
-            else
-            {
-                release_sock_fd( writefds->fd_array[i], fds[j].fd );
-                fds[j].fd = -1;
-                fds[j].events = 0;
-            }
+            fds[j].events = POLLOUT;
         }
     if (exceptfds)
         for (i = 0; i < exceptfds->fd_count; i++, j++)
@@ -5296,24 +5277,15 @@ static struct pollfd *fd_sets_to_poll( const WS_fd_set *readfds, const WS_fd_set
             fds[j].fd = get_sock_fd( exceptfds->fd_array[i], 0, NULL );
             if (fds[j].fd == -1) goto failed;
             fds[j].revents = 0;
-            if (is_fd_bound(fds[j].fd, NULL, NULL) == 1)
-            {
-                int oob_inlined = 0;
-                socklen_t olen = sizeof(oob_inlined);
+		    int oob_inlined = 0;
+		    socklen_t olen = sizeof(oob_inlined);
 
-                fds[j].events = POLLHUP;
+		    fds[j].events = POLLHUP;
 
-                /* Check if we need to test for urgent data or not */
-                getsockopt(fds[j].fd, SOL_SOCKET, SO_OOBINLINE, (char*) &oob_inlined, &olen);
-                if (!oob_inlined)
-                    fds[j].events |= POLLPRI;
-            }
-            else
-            {
-                release_sock_fd( exceptfds->fd_array[i], fds[j].fd );
-                fds[j].fd = -1;
-                fds[j].events = 0;
-            }
+		    /* Check if we need to test for urgent data or not */
+		    getsockopt(fds[j].fd, SOL_SOCKET, SO_OOBINLINE, (char*) &oob_inlined, &olen);
+		    if (!oob_inlined)
+		        fds[j].events |= POLLPRI;
         }
     return fds;
 
